"""
请求

flask的请求数据通过 request 对象来获取

常用属性:
属性	        说明	                        类型
url	    记录请求的URL地址	            str
method	记录请求使用的HTTP方法	        str
headers	记录请求中的报文头	            EnvironHeaders 类字典对象
args	记录请求中的查询参数	        MultiDict
form	记录请求中的表单数据	        MultiDict
data	记录请求的数据，并转换为字符串	bytes
json	记录请求体中的json数据	        Dict
files	记录请求上传的文件	            MultiDict[str: FileStorage]
"""
from flask import Flask, request

app = Flask(__name__)


@app.route('/', methods=['get', 'post'])
def index():
    # 获取请求的基础数据
    # # 获取请求的url   http://127.0.0.1:5000/
    # print(request.url)
    # # 获取本次请求的请求方式   GET
    # print(request.method)

    # 获取请求头信息   类字典对象
    """
    Host: 127.0.0.1:5000
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Sec-Fetch-Site: none
    Sec-Fetch-Mode: navigate
    Sec-Fetch-User: ?1
    Sec-Fetch-Dest: document
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9
    """
    # print(request.headers)
    # 根据键取值  推荐使用 get 方法,如果不存在不报错
    # print(request.headers['Host'])
    # print(request.headers.get('Host'))

    # 请求传递数据 1> URL路径 -> 路由变量  2> 查询字符串 get  3> 请求体  post  4> 请求头 -> request.headers

    # 获取查询字符串 -> request.args  xx?name=zs&age=20  类字典对象
    # print(request.args.get('name'))
    # print(request.args.get('age'))

    # 请求体:   键值对(表单)   文本(json/xml)  文件(图片/音频)

    # 获取post键值对 -> request.form  类字典对象
    # print(request.form.get('username'))

    # 获取post文本数据 -> request.data / request.json
    # print(request.data)  # 返回bytes类型
    # print(request.json.get('age'))  # request.json直接将json字符串转为字典

    # 获取post文件 -> request.files  类字典对象
    file = request.files.get("avatar")
    # print(type(file))  # 返回 FileStorage文件对象
    # 将文件保存到本地
    file.save('123.jpg')

    # 获取文件的二进制数据
    img_bytes = file.read()
    print(img_bytes)

    return "index"


if __name__ == '__main__':
    app.run(debug=True)
